From ea8167d9194cc3aac2b747f88df628faa7288629 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 8 Jan 2006 06:11:18 +0000 Subject: [PATCH] Fix this for the single-rectangle case. (#326127, Benjamin Berg) 2006-01-08 Matthias Clasen * gdk/gdkregion-generic.c (miRegionCopy): Fix this for the single-rectangle case. (#326127, Benjamin Berg) (gdk_region_copy): Use miRegionCopy() here. --- ChangeLog | 6 ++++++ ChangeLog.pre-2-10 | 6 ++++++ gdk/gdkregion-generic.c | 23 +++++++++-------------- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 72d821f485..73b69b76ba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-01-08 Matthias Clasen + + * gdk/gdkregion-generic.c (miRegionCopy): Fix this for the + single-rectangle case. (#326127, Benjamin Berg) + (gdk_region_copy): Use miRegionCopy() here. + 2006-01-07 Matthias Clasen Fix actiongroup-action interaction that relied on diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 72d821f485..73b69b76ba 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,9 @@ +2006-01-08 Matthias Clasen + + * gdk/gdkregion-generic.c (miRegionCopy): Fix this for the + single-rectangle case. (#326127, Benjamin Berg) + (gdk_region_copy): Use miRegionCopy() here. + 2006-01-07 Matthias Clasen Fix actiongroup-action interaction that relied on diff --git a/gdk/gdkregion-generic.c b/gdk/gdkregion-generic.c index 267b44a159..2d1524bbcb 100644 --- a/gdk/gdkregion-generic.c +++ b/gdk/gdkregion-generic.c @@ -168,19 +168,9 @@ gdk_region_copy (GdkRegion *region) g_return_val_if_fail (region != NULL, NULL); - temp = g_slice_new (GdkRegion); + temp = gdk_region_new (); - temp->numRects = region->numRects; - temp->extents = region->extents; - temp->size = region->numRects; - - if (region->numRects == 1) - temp->rects = &temp->extents; - else - { - temp->rects = g_new (GdkRegionBox, region->numRects); - memcpy (temp->rects, region->rects, region->numRects * sizeof (GdkRegionBox)); - } + miRegionCopy (temp, region); return temp; } @@ -600,15 +590,20 @@ gdk_region_intersect (GdkRegion *source1, } static void -miRegionCopy(GdkRegion *dstrgn, GdkRegion *rgn) +miRegionCopy (GdkRegion *dstrgn, + GdkRegion *rgn) { if (dstrgn != rgn) /* don't want to copy to itself */ { if (dstrgn->size < rgn->numRects) { - dstrgn->rects = g_renew (GdkRegionBox, dstrgn->rects, rgn->numRects); + if (dstrgn->rects != &dstrgn->extents) + g_free (dstrgn->rects); + + dstrgn->rects = g_new (GdkRegionBox, rgn->numRects); dstrgn->size = rgn->numRects; } + dstrgn->numRects = rgn->numRects; dstrgn->extents = rgn->extents; -- 2.30.2